// 为什么 CAN 总线需要 ID 过滤和掩码
// 1. 多主设备共享总线
// 在 CAN 总线上，所有设备都连接到同一条物理线路，每个设备都可以发送消息。这意味着：
// -任何时刻都可能有多个设备发送消息
// -总线上传输的所有消息都会被所有设备"看到"
// -每个设备都会收到总线上的所有消息

// 2. 消息过滤的必要性
// 如果没有过滤机制，每个设备都需要处理总线上的所有消息，这会导致：
// -CPU 资源浪费：处理大量与自己无关的消息
// -中断负担增加：每条消息都会触发中断
// -响应延迟：重要消息可能被延迟处理

// 3. ID 和掩码的工作原理
// CAN 控制器提供硬件级别的消息过滤，通过 ID 和掩码实现：
// -ID：指定感兴趣的消息标识符
// -掩码：指定哪些 ID 位必须精确匹配
//      掩码中的 1 位：必须匹配
//      掩码中的 0 位："不关心"，可以是 0 或 1
// 过滤规则：(接收到的ID & 掩码) == (设置的ID & 掩码)

// 4. 实际应用示例
// 假设在一个工业控制系统中：
// -温度传感器发送 ID 为 0x100 的消息
// -压力传感器发送 ID 为 0x101 的消息
// -液位传感器发送 ID 为 0x102 的消息
// -控制器发送命令，ID 为 0x200-0x20F

// 如果一个设备只关心温度数据：
// 设置 ID = 0x100
// 设置掩码 = 0x7FF（11位全1，表示精确匹配）

// 如果一个设备关心所有传感器数据：
// 设置 ID = 0x100
// 设置掩码 = 0x7F0（只匹配高位，低4位不关心）
//  这样会接收 0x100-0x10F 范围内的所有消息


